//package com.many.backs.controller;
//
//
//import cn.hutool.crypto.Mode;
//import cn.hutool.crypto.Padding;
//import cn.hutool.crypto.symmetric.AES;
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.extension.api.R;
//import com.many.backs.service.UserService;
//import com.many.common.constants.Constant;
//import com.many.common.constants.ResponseBodyMessage;
//import com.many.data.entity.User;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//import org.springframework.web.bind.annotation.*;
//
//import javax.crypto.Cipher;
//import javax.crypto.spec.IvParameterSpec;
//import javax.crypto.spec.SecretKeySpec;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpSession;
//import java.nio.charset.StandardCharsets;
//import java.util.List;
//import java.util.stream.Collectors;
//
///**
// * <p>
// *  前端控制器
// * </p>
// *
// * @author james
// * @since 2022-08-01
// */
//@RestController
//@RequestMapping("/admin")
//public class UserController {
//
//    @Autowired
//    private UserService userService;
//
////    @Autowired
////    private BCryptPasswordEncoder bCryptPasswordEncoder;
//
//    private static final String AES_KEY = "teamteamteamteam";
//    private static final String KEY_ALGORITHM = "AES";
//
//
//
//    @PostMapping("/login")
//    public ResponseBodyMessage<User> login(User user, HttpServletRequest request) {
//        com.many.data.entity.User truUser = userService.getOne(new LambdaQueryWrapper<com.many.data.entity.User>().eq(com.many.data.entity.User::getUsername, user.getUsername()));
//        if (truUser != null) {
//            System.out.println("登陆成功");
//            System.out.println(user.getPassword() + " " + truUser.getPassword());
//            boolean flg = bCryptPasswordEncoder.matches(user.getPassword(), truUser.getPassword());
//            if (!flg) {
//                return new ResponseBodyMessage<>(-1, "当前账号密码错误!", user);
//            }
//            HttpSession session = request.getSession(true);
//            session.setAttribute(Constant.USER_SESSION_KEY, truUser);
//            return new ResponseBodyMessage<User>(1, "登录成功!", truUser);
//        } else {
//            System.out.println("登录失败");
//            return new ResponseBodyMessage<User>(-1, "当前账号密码错误!", user);
//        }
//    }
//
//    @RequestMapping("/register")
//    public ResponseBodyMessage<Boolean> register(@RequestBody User user) {
//        User user1 = userService.getOne(new LambdaQueryWrapper<User>().eq(User::getUsername, user.getUsername()));
//        if (user1 != null) {
//            return new ResponseBodyMessage<>(-1, "当前用户已经存在", false);
//        } else {
//            User newUser = new User();
//            newUser.setUsername(user.getUsername());
//            String newPassword = bCryptPasswordEncoder.encode(user.getPassword());
//            newUser.setPassword(newPassword);
//            userService.save(newUser);
//            return new ResponseBodyMessage<>(200, "注册成功", true);
//        }
//    }
//
//    @GetMapping("/stream")
//    public R stream(){
//        List<User> list = userService.list();
//        List<User> collect = list.stream().filter(x -> x.getUsername().equals("admin")).collect(Collectors.toList());
//        return R.ok(collect);
//    }
//
//
//
//    /**
//     * ASC加密
//     *
//     * @param data
//     * @return
//     */
//    public static String encrypt(String data) {
//        return encrypt(data, AES_KEY, AES_KEY);
//    }
//
//    /**
//     * 加密方法
//     *
//     * @param data 要加密的数据
//     * @param key  加密key
//     * @param iv   加密iv
//     * @return 加密的结果
//     */
//    private static String encrypt(String data, String key, String iv) {
//        try {
//            //"算法/模式/补码方式"NoPadding PkcsPadding
//            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
//            int blockSize = cipher.getBlockSize();
//
//            byte[] dataBytes = data.getBytes();
//            int plaintextLength = dataBytes.length;
//            if (plaintextLength % blockSize != 0) {
//                plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
//            }
//
//            byte[] plaintext = new byte[plaintextLength];
//            System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
//
//            SecretKeySpec keyspec = new SecretKeySpec(key.getBytes(), "AES");
//            IvParameterSpec ivspec = new IvParameterSpec(iv.getBytes());
//
//            cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
//            byte[] encrypted = cipher.doFinal(plaintext);
//
//            return new org.apache.commons.codec.binary.Base64().encodeToString(encrypted);
//
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }
//    }
//    /**
//     * AES解密
//     *
//     * @param password
//     * @return
//     */
//    private static String decrypt(String password) {
//        AES aes = new AES(Mode.CBC, Padding.NoPadding,
//                new SecretKeySpec(AES_KEY.getBytes(), KEY_ALGORITHM),
//                new IvParameterSpec(AES_KEY.getBytes()));
//        byte[] result2 = aes.decrypt(password);
//        password = new String(result2, StandardCharsets.UTF_8).trim();
//        //System.out.println(password);
//        return password;
//    }
//
//
//    public static void main(String[] args) {
//        String encrypt = encrypt("123456");
//        System.out.println(encrypt);
//        System.out.println(decrypt(encrypt));
//    }
//
//}
